package main

import (
	"fmt"
	"strconv"
)

/**
两个超长字符串数字相加
*/

func main() {
	str1 := "123"
	str2 := "12"
	result := TwoStringSum(str1, str2)
	fmt.Println(result)
}

func TwoStringSum(str1, str2 string) string {
	str1Len := len(str1) - 1
	str2Len := len(str2) - 1
	add := 0
	ans := ""
	for str1Len >= 0 || str2Len >= 0 {
		fmt.Println(str1Len, str2Len)
		if str1Len >= 0 && str2Len >= 0 {
			tmp1, _ := strconv.Atoi(str1[str1Len : str1Len+1])
			tmp2, _ := strconv.Atoi(str2[str2Len : str2Len+1])
			tmp := tmp1 + tmp2 + add
			if tmp > 10 {
				tmp = tmp - 10
				add = 1
			} else {
				add = 0
			}
			ans = strconv.Itoa(tmp) + ans
		} else if str1Len >= 0 && str2Len < 0 {
			tmp1, _ := strconv.Atoi(str1[str1Len : str1Len+1])
			tmp := tmp1 + add
			add = 0
			ans = strconv.Itoa(tmp) + ans
		} else {
			tmp2, _ := strconv.Atoi(str2[str2Len : str2Len+1])
			tmp := tmp2 + add
			add = 0
			ans = strconv.Itoa(tmp) + ans
		}
		str1Len--
		str2Len--
	}
	return ans
}
